package dk.muldbjergskolen.ctr;

import java.sql.*;
import java.util.ArrayList;

import dk.muldbjergskolen.db.AnsatDB;
import dk.muldbjergskolen.db.ConnectionDB;
import dk.muldbjergskolen.db.PersonDB;
import dk.muldbjergskolen.db.PersonDB.UGyldigtPostNr;
import dk.muldbjergskolen.model.Ansat;
import dk.muldbjergskolen.model.Fag;
import dk.muldbjergskolen.model.Inventar;
import dk.muldbjergskolen.model.Klasse;
import dk.muldbjergskolen.model.Lokale;
import dk.muldbjergskolen.model.Person;
import dk.muldbjergskolen.db.LaererDB;
import dk.muldbjergskolen.model.Laerer;

public class AnsatCtr {

	private AnsatDB aDB = new AnsatDB();

	/***
	 * Finder en ansat baseret på brugernavn og adgangskode.
	 * 
	 * @param brugernavn	på ansatten.
	 * @param adgangskode	på ansatten.
	 * @return en ansat.
	 * @throws UgyldigtLogin	hvis brugernavn og/eller adgangskode ikke stemmer overens.
	 */
	public Ansat getAnsat(String brugernavn, String adgangskode)
			throws UgyldigtLogin {
		
		Ansat a = aDB.getAnsat(brugernavn, adgangskode);

		// Kast fejl hvis der ikke blev fundet nogen ansat.
		if (a == null)
			throw new UgyldigtLogin();

		return a;
	}

	//tilføjer en ansat , person til databasen
	public void opretAnsat(String fornavn, String efternavn, String addresse, int postNr,
			String tlf, String email, String cpr, String stilling, String brugernavn, String adgangskode ) throws UGyldigtPostNr
	{
		Ansat a = new Ansat(stilling, brugernavn, adgangskode, fornavn, efternavn, addresse, postNr, tlf, email, cpr);
		
		try
		{
			ConnectionDB.startTransaction();
			
			aDB.opretAnsat(a);
			
			ConnectionDB.commitTransaction();
		}
		catch (Exception e)
		{
			System.out.println("AnsatCtr.opretAnsat: " + e.getMessage());
			ConnectionDB.rollbackTransaction();
			
			throw e;
		}
	}
	
	// kalder findAnsatte i databasen
	public ArrayList<Ansat> findAnsatte()
	{
		return aDB.findAnsatte();
	}
	
	/**
	 * Retter en ansat.
	 * @param nyAnsat	Den nye ansat.
	 * @param id	på ansatten som skal ændres.
	 * @throws UGyldigtPostNr
	 */
	public void retAnsat(Ansat nyAnsat, int id) throws UGyldigtPostNr
	{
		
		try
		{
			ConnectionDB.startTransaction();
			
			aDB.retAnsat(nyAnsat, id);
			
			ConnectionDB.commitTransaction();
		}
		catch (Exception e)
		{
			System.out.println("AnsatCtr.retAnsat: " + e.getMessage());
			ConnectionDB.rollbackTransaction();
			
			throw e;
		}
	}
	
	

	public class UgyldigtLogin extends Exception 
	{

	}
}
